善用 Tempo 和 Prometheus,深入剖析你的服務
在微服務架構盛行的今天,服務之間的複雜互動關係使得系統的監控變得越來越重要。OpenTelemetry SDK Zero Code 提供了一種便捷的方式來收集 telemetry data,而 Tempo 和 Prometheus 則能將這些數據轉化為有價值的洞見。本文將深入探討如何利用 Tempo 和 Prometheus 來查看 Trace 資訊,並可視化 Service Graph,以便你更深入地了解你的服務。
OpenTelemetry SDK Zero Code 的角色
OpenTelemetry SDK Zero Code 的主要功能是自動為你的應用程式生成 telemetry data,包括 trace、metric 和 log。這些數據會被傳送到後端系統,例如 Tempo 和 Prometheus,進行進一步的處理和分析。
Tempo:你的 Trace 資料庫
Tempo 是一個高效且易於使用的 tracing backend,專門用於儲存和查詢 trace 資料。它支援多種 tracing protocol,包括 Jaeger、Zipkin 和 OpenTelemetry。Tempo 的主要優勢在於:
低成本: Tempo 將 trace 資料儲存在物件儲存中,例如 Google Cloud Storage 或 Amazon S3,大幅降低了儲存成本。
高性能: Tempo 採用了高效的資料結構和查詢引擎,能夠快速查詢和分析大量的 trace 資料。
易於使用: Tempo 提供了友好的使用者介面和強大的查詢語言(TraceQL),方便使用者進行查詢和分析。
Prometheus:你的 Metric 資料庫
Prometheus 是一個開源的系統監控和警報工具。它通過 pull 模式從目標端點收集 metrics,並將這些 metrics 儲存起來,以便進行時間序列分析。Prometheus 的主要特點包括:
靈活的查詢語言: Prometheus 的查詢語言 PromQL 非常強大,可以進行複雜的查詢和聚合。
多維度數據模型: Prometheus 使用多維度數據模型來儲存 metrics,方便進行多維度分析。
豐富的生態系統: Prometheus 有著豐富的生態系統,提供了大量的 exporter 和儀表板。
Grafana:你的可視化工具
Grafana 是一個開源的分析和監控平台,它可以連接多個資料來源,包括 Tempo 和 Prometheus。Grafana 提供了豐富的圖表和儀表板功能,可以幫助你可視化 trace 和 metric 資料。
結合 Tempo 和 Prometheus,打造全方位的監控體系
通過將 Tempo 和 Prometheus 與 Grafana 結合,可以:
查看不同服務進來的時間順序: 利用 Tempo 的 trace 資料,你可以清楚地看到每個請求在不同服務之間的流轉過程,以及每個步驟所耗費的時間。
鑽取到具體的 Span: 通過點擊 trace 中的 Span,你可以深入到具體的函數(function)或方法(service),查看其執行細節。
使用 Filter (Query Language) 進行篩選: Tempo 的 Filter QL - TraceQL 非常類似於 PromQL,你可以根據 duration、status code 或者其他 label 來篩選 trace 資料。
可視化 Service Graph: Grafana 可以根據 Tempo 的 trace 資料生成 Service Graph,直觀地展示服務之間的依賴關係。
Tempo 和 Prometheus 是兩個非常強大的工具,它們可以幫助你深入了解你的服務的性能和行為。通過將它們與 OpenTelemetry SDK Zero Code 和 Grafana 結合,你可以建立一個全方位的監控體系,以便你更好地維護和優化你的應用程式。
進一步探索以下主題:
TraceQL: 深入學習 TraceQL 的語法和用法,以便你可以更精準地查詢 trace 資料。
Grafana 儀表板: 學習如何使用 Grafana 建立自定義的儀表板,以便你可以可視化你關心的 metrics 和 traces。
Service Graph 分析: 了解如何分析 Service Graph,找出系統中的瓶頸和潛在問題。
資源索引:
以下為造著資源做出來的結果:
Grafana : Explore > Tempo
點選 Trace QL default A section 中的Search
可以看到多個Trace ID 按時間從新到舊。
把Trace ID點進,可以看到多個Span。
加進Metrics-generator
即可點選 Trace QL default A section 中的Service Graph
。
將2.的文字用圖片中的標記導引開出對應的結果強調
開啟Metrics-generator
後,並額外加入Prometheus,點選Rate, Error Rate, Duration,可跳出右邊的視窗顯示Graph(資料來源為Prometheus)